package com.ruoyi.oar.service;

import java.util.List;
import java.util.Optional;
import com.ruoyi.oar.domain.dto.OarVerifiTaskDTO;
import com.ruoyi.oar.domain.query.OarVerifiTaskQuery;
import com.ruoyi.common.core.page.TableDataInfo;

/**
 * 核查任务Service接口
 * 
 * @author oar
 * @date 2022-02-26
 */
public interface OarVerifiTaskService
{
    /**
     * 查询核查任务
     * 
     * @param id 核查任务主键
     * @return 核查任务
     */
    public Optional<OarVerifiTaskDTO> selectOarVerifiTaskById(String id);

    /**
     * 查询核查任务列表
     * 
     * @param oarVerifiTaskQuery 核查任务
     * @return 核查任务集合
     */
    public List<OarVerifiTaskDTO> selectOarVerifiTaskList(OarVerifiTaskQuery oarVerifiTaskQuery);

    /**
     * 分页查询核查任务列表
     *
     * @param oarVerifiTaskQuery 核查任务
     * @return 核查任务集合
     */
    public TableDataInfo<OarVerifiTaskDTO> findAll(OarVerifiTaskQuery oarVerifiTaskQuery);

    /**
     * 新增核查任务
     * 
     * @param oarVerifiTaskDTO 核查任务
     * @return 结果
     */
    public int insertOarVerifiTask(OarVerifiTaskDTO oarVerifiTaskDTO);

    /**
     * 修改核查任务
     * 
     * @param oarVerifiTaskDTO 核查任务
     * @return 结果
     */
    public int updateOarVerifiTask(OarVerifiTaskDTO oarVerifiTaskDTO);

    /**
     * 批量删除核查任务
     * 
     * @param ids 需要删除的核查任务主键集合
     * @return 结果
     */
    public int deleteOarVerifiTaskByIds(String[] ids);

    /**
     * 删除核查任务信息
     * 
     * @param id 核查任务主键
     * @return 结果
     */
    public int deleteOarVerifiTaskById(String id);

    /**
     * 统计该批次必填是否已全填
     * @param taskId
     * @return
     */
    public int countByTaskId(String taskId);

    /**
     * 统计核查任务数量
     * @param taskState
     * @return
     */
    public int countByTaskState(Integer taskState);

    /**
     * 批次导入插入房屋
     * @param taskId
     * @param deptId
     */
    public void batchInsertOarHouse(String taskId, String deptId,String userId);

    /**
     * 提交任务
     * @param oarVerifiTaskDTO
     * @return
     */
    public int commitTask(OarVerifiTaskDTO oarVerifiTaskDTO);
}
